Revert "Remove _gtk_box_get_children"
authorCarlos Garcia Campos <cgarcia@igalia.com>
Fri, 12 Feb 2016 12:21:14 +0000 (13:21 +0100)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Fri, 12 Feb 2016 12:29:21 +0000 (13:29 +0100)
This reverts commit 572e9a04027e213082a5b257e5d662a5daa32667.

_gtk_box_get_children was not doing exactly the same than
gtk_container_get_children does, because the latter uses the forall
implementation of GtkBox that takes into account the children pack mode while
the former just iterated the list of children. This broke the order of
the buttons in a GtkButtonBox when they were packaged with PACK_END.

gtk/gtkbbox.c
gtk/gtkbox.c
gtk/gtkboxprivate.h

index a492a19a189c06ce3472000353952dda9296095a..ab672377d71bbf73a42e10c91de00fe9d90c5191 100644 (file)
@@ -631,7 +631,7 @@ gtk_button_box_child_requisition (GtkWidget  *widget,
 
   nchildren = 0;
   nsecondaries = 0;
-  list = children = gtk_container_get_children (GTK_CONTAINER (widget));
+  list = children = _gtk_box_get_children (GTK_BOX (bbox));
   needed_width = child_min_width;
   needed_height = child_min_height;
   needed_above = 0;
@@ -1123,7 +1123,7 @@ gtk_button_box_allocate (GtkCssGadget        *gadget,
     sizes = heights;
 
   i = 0;
-  list = children = gtk_container_get_children (GTK_CONTAINER (widget));
+  list = children = _gtk_box_get_children (GTK_BOX (widget));
   while (children)
     {
       GtkWidget *child;
index d1a6edea6c2b4903a5c9c8c6a1e614efc2bdbfcb..d0e9d3dc0fef6256ffbb2cf27698d5bee35c513e 100644 (file)
@@ -2674,6 +2674,30 @@ gtk_box_forall (GtkContainer *container,
     }
 }
 
+GList *
+_gtk_box_get_children (GtkBox *box)
+{
+  GtkBoxPrivate *priv;
+  GtkBoxChild *child;
+  GList *children;
+  GList *retval = NULL;
+
+  g_return_val_if_fail (GTK_IS_BOX (box), NULL);
+
+  priv = box->priv;
+
+  children = priv->children;
+  while (children)
+    {
+      child = children->data;
+      children = children->next;
+
+      retval = g_list_prepend (retval, child->widget);
+    }
+
+  return g_list_reverse (retval);
+}
+
 /**
  * gtk_box_set_center_widget:
  * @box: a #GtkBox
index 08f8f32a26a426fc318baff22e85249c4defe092..cd997582da08e044b85b707ffa6eebd566248297 100644 (file)
@@ -29,6 +29,7 @@ void        _gtk_box_set_old_defaults   (GtkBox         *box);
 gboolean    _gtk_box_get_spacing_set    (GtkBox         *box);
 void        _gtk_box_set_spacing_set    (GtkBox         *box,
                                          gboolean        spacing_set);
+GList      *_gtk_box_get_children       (GtkBox         *box);
 
 GtkCssGadget *gtk_box_get_gadget (GtkBox *box);